package udpdemo3;

import java.io.IOException;
import java.net.*;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-08-09
 * Time: 0:17
 */
/*
UDP组播实现
实现步骤
发送端
1. 创建发送端的Socket对象(DatagramSocket)
2. 创建数据，并把数据打包(DatagramPacket)
3. 调用DatagramSocket对象的方法发送数据(在单播中,这里是发给指定IP的电脑但是在组
播当中,这里是发给组播地址)
4. 释放资源

接收端
1. 创建接收端Socket对象(MulticastSocket)
2. 创建一个箱子,用于接收数据
3. 把当前计算机绑定一个组播地址
4. 将数据接收到箱子中
5. 解析数据包,并打印数据
6. 释放资源*/
public class ServerDemo {
    public static void main(String[] args) throws IOException {
        /*多播数据报套接字类对于发送和接收 IP 多播数据包很有用。
         MulticastSocket 是一个 (UDP) DatagramSocket，具有加入 Internet 上其他多播主机“组”的附加功能。
        多播组由 D 类 IP 地址和标准 UDP 端口号指定。
        D 类 IP 地址在224.0.0.0到239.255.255.255范围内，包括在内。地址 224.0.0.0 已保留，不应使用。
        */
        MulticastSocket groupSocket=new MulticastSocket(1000);
        
        byte[] bytes=new byte[1024];
        DatagramPacket packet=new DatagramPacket(bytes,bytes.length);
        
        groupSocket.joinGroup(InetAddress.getByName("224.0.1.2"));
        groupSocket.receive(packet);
    
        byte[] data = packet.getData();
        int length = packet.getLength();
        System.out.println(new String(data,0,length));
    
        groupSocket.close();
    }
}
